package org.example.projecttwo.entity.dto.user.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@Schema(description = "用户导出DTO")
public class UserExportDTO {

    @Schema(description = "主键ID（雪花算法）")
    private Long id;

    @Schema(description = "用户编号（对外展示）")
    private String userNo;

    @Schema(description = "用户名（登录账号）")
    private String username;

    @Schema(description = "昵称")
    private String nickname;

    @Schema(description = "头像URL")
    private String avatar;

    @Schema(description = "手机号")
    private String phone;

    @Schema(description = "邮箱")
    private String email;

    @Schema(description = "学院ID")
    private Long collegeId;

    @Schema(description = "学院名称")
    private String collegeName;

    @Schema(description = "账号状态")
    private Integer status;

    @Schema(description = "角色编码")
    private String roleCode;

    @Schema(description = "认证类型")
    private Integer authType;

    @Schema(description = "积分")
    private Integer points;

    @Schema(description = "注册时间")
    private LocalDateTime registerTime;

    @Schema(description = "最后登录时间")
    private LocalDateTime lastLoginTime;

    @Schema(description = "个性签名")
    private String signature;

    @Schema(description = "性别")
    private Integer gender;

    @Schema(description = "出生日期")
    private LocalDate birthday;

    @Schema(description = "专业班级")
    private String majorClass;

    @Schema(description = "学号")
    private String studentNo;

    @Schema(description = "个性标签JSON")
    private String tagsJson;

    @Schema(description = "最后修改昵称时间")
    private LocalDateTime lastNicknameUpdateTime;

    @Schema(description = "最后更新时间")
    private LocalDateTime updateTime;

    @Schema(description = "登录失败次数")
    private Integer loginFailCount;

    @Schema(description = "账号锁定结束时间")
    private LocalDateTime lockTime;

    @Schema(description = "最后修改密码时间")
    private LocalDateTime passwordUpdateTime;
}